package com.loser.excel.core.handler.listener;

import com.alibaba.fastjson.JSONObject;
import com.loser.excel.aspect.ExcelExportAspect;
import com.loser.excel.model.ExportTaskInfo;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

/**
 * @author loser
 */
public interface ExportExcelEventListener {

    Logger LOGGER = LogManager.getLogger(ExcelExportAspect.class);

    /**
     * 任务初始化事件
     *
     * @param info 任务信息
     */
    default void initEvent(ExportTaskInfo info) {
        LOGGER.info("initEvent data {}", JSONObject.toJSON(info));
    }

    /**
     * 任务完成事件
     *
     * @param info 任务信息
     */
    default void finishEvent(ExportTaskInfo info) {
        LOGGER.info("finishEvent data {}", JSONObject.toJSON(info));
    }

    /**
     * 任务异常失败事件
     *
     * @param info 任务信息
     * @param e    异常
     */
    default void failureEvent(ExportTaskInfo info, Exception e) {
        LOGGER.info("failureEvent data {}", JSONObject.toJSON(info), e);
    }

    /**
     * 任务删除事件
     *
     * @param info 任务信息
     */
    default void deletedEvent(ExportTaskInfo info) {
        LOGGER.info("deletedEvent data {}", JSONObject.toJSON(info));
    }

    /**
     * 任务终止事件
     *
     * @param info 任务信息
     */
    default void stopEvent(ExportTaskInfo info) {
        LOGGER.info("stopEvent data {}", JSONObject.toJSON(info));
    }

}
